﻿using DAL;
using Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BLL
{
    public class B_Student
    {
        DAL.D_Student dal = new DAL.D_Student();

        public bool Add(List<Student> list)//向数据库添加一个学生列表。
        {
            return dal.Add(list);
        }

        public bool Del(List<Student> list)//从数据库删除一个学生列表。
        {
            return dal.Del(list);
        }
        public List<Student> GetList(int grade, int config_id)//根据年级和配置ID获取学生列表
        {
            return dal.GetList(grade, config_id);
        }

        public List<Student> GetList()//获取所有学生的信息。
        {
            return dal.GetList();
        }

        public List<Student> GetPage(int Page_idx, int Page_size, ref int totalCount)//获取分页的学生列表，并返回总记录数。这里使用了 GetPage_storePro 方法，这可能是一个存储过程。
        {
            //return dal.GetPage(Page_idx, Page_size, ref totalCount);
            return dal.GetPage_storePro(Page_idx, Page_size, ref totalCount);
        }

        public List<Student> GetList(Models.Stu_group group)//根据分组获取学生列表。
        {
            return dal.GetList(group);
        }

        public List<Student> GetList_wo_Group()//获取没有分组的学生列表。
        {
            return dal.GetList_wo_Group();
        }

        public bool save_List(List<Student> students)//保存学生列表到数据库。
        {
            return dal.save_List(students);
        }


        public int release_groupid(Stu_group stu_Group)//更新该组学生学生表的相关信息。
        {
            return dal.release_groupid(stu_Group);
        }

        public bool Update_groupid(List<Models.Student> students, int group_id, out string msg)
        {
            //取当前时间，取数据库截止时间
            //比较两个时间
            //如果超时：return

            //int i = 0;

            //while (!dal.Update_groupid(model))
            //{
            //    i++;
            //    if (i == 3)
            //        break;
            //}


            if (dal.Update_groupid(students, group_id))
            {
                msg = "ok!";
                return true;

            }
            else
            {
                msg = "false!";
                return false;
            }
        }

        public bool Time_out(Student m_stu)//检查学生是否超时，使用 D_config 类的 Stu_Timeout 方法。
        {
            DAL.D_config d_Config = new DAL.D_config();
            return d_Config.Stu_Timeout(m_stu);
        }
        public bool Login(Student m_stu)//执行登录操作，使用 D_Student 类的 Login_sugar 方法，并根据 Time_out 方法的结果设置 log_info.Student_timeout。
        {
            //var res = dal.Login_sugar(m_stu);
            int i = 0;
            bool res = false;
            while (!(res=dal.Login_sugar(m_stu)))
            {
                i++;
                if (i == 3)
                    break;
            }

           
            if (res)
            {
                log_info.Student_timeout = Time_out(log_info.student) ? true : false;
            }





            return res;
        }





        //   public bool ResetOtherStudentsLeadership(int groupId, int leaderId)//提交队伍时修改is_gleader
        //   {
        //       return dal.ResetGroupLeaders(groupId, leaderId);
        //   }
        //
        //    public bool ResetOtherStudentsLeadership2(int groupId, int leaderId)//解散队伍时修改is_gleader
        //    {
        //        return dal.ResetGroupLeadersAfterDisband(groupId, leaderId);
        //    }
        //
    }
}
